home *** CD-ROM | disk | FTP | other *** search
/ Zoom 2 / Zoom - Release 2 (1996)(Active Software)[!].iso / programming / amiga / visualarts / source / icon / icon.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-02  |  6.6 KB  |  274 lines

  1. /* ******************************************************************** */
  2. /* C code generated by:                            */
  3. /* Visual Arts Version 2.1                        */
  4. /* Copyright 1994-95 Danny Y. Wong  All rights reserved            */
  5. /* Calgary, Alberta (CANADA)                                    */
  6. /* Partial of the code is copyright by Jaba Development            */
  7. /* ******************************************************************** */
  8.  
  9. #include <VisualArts.h>
  10. #include <clib/VisualArts_protos.h>
  11.  
  12. #define ID_Quit                                       0
  13.  
  14. #define IconNumGads                        1
  15. #define ID_icon1                                      1
  16. #define ID_icon2                                      2
  17. #define ID_icon3                                      3
  18. #define ID_icon4                                      4
  19. #define ID_icon5                                      5
  20.  
  21. #include "Icon_func.c" 
  22.  
  23. #include "Icon_images.c" 
  24.  
  25. int QuitObj(struct VAobject VAObject);
  26. int icon1Obj(struct VAobject VAObject);
  27. int icon2Obj(struct VAobject VAObject);
  28. int icon3Obj(struct VAobject VAObject);
  29. int icon4Obj(struct VAobject VAObject);
  30. int icon5Obj(struct VAobject VAObject);
  31.  
  32. int GetPubScreen(void);
  33. void ClosePubScreen(void);
  34. int OpenIconWindow(char windtitle[]);
  35. void CloseIconWindow(void);
  36. int IconHandler(void);
  37. int IconMainHandler(void);
  38. void DrawIconObjs(void);
  39. int main(int argc, char *argv[]);
  40.  
  41. UBYTE                *PubScrName = "Workbench";
  42. struct DrawInfo            *ScrDrawInfo = NULL;
  43. APTR                 VisualInfo = NULL;
  44. struct Screen            *Scr = NULL;
  45. struct Window            *IconWnd = NULL;
  46. struct Gadget            *IconGList = NULL;
  47. struct Gadget            *IconGadgets[IconNumGads];
  48. struct IntuiMessage         IconMsg;
  49. UWORD                 IconLeft = 118;
  50. UWORD                 IconTop = 63;
  51. UWORD                 IconWidth = 307;
  52. UWORD                 IconHeight = 56;
  53. struct TextAttr topaz8 = { (STRPTR)"topaz.font", 8, 0x00, 0x01 };
  54. struct TextAttr topaz800 = { (STRPTR)"topaz.font", 8, 0x00, 0x00 };
  55.  
  56. WORD IconGadTypes[] = {
  57.     BUTTON_KIND,
  58. };
  59.  
  60. struct NewGadget IconNGads[] = {
  61.     124, 30, 62, 12, (UBYTE *)"Quit",&topaz800, ID_Quit, PLACETEXT_IN, NULL, (APTR)QuitObj,
  62. };
  63.  
  64. ULONG IconNTags[] = {
  65.     TAG_DONE,
  66. };
  67.  
  68. struct Gadget icon1Gad = {
  69.     NULL, 14, 13, 52, 23, 
  70.     GFLG_GADGHIMAGE | GFLG_GADGIMAGE, GACT_IMMEDIATE | GACT_RELVERIFY,
  71.     GTYP_BOOLGADGET, (APTR)&def_makefileImage, (APTR)&def_makefile1Image, NULL, 0x0, NULL,
  72.     ID_icon1, (APTR)icon1Obj
  73. };
  74.  
  75. struct Gadget icon2Gad = {
  76.     &icon1Gad, 126, 13, 54, 23, 
  77.     GFLG_GADGHIMAGE | GFLG_GADGIMAGE, GACT_IMMEDIATE | GACT_RELVERIFY,
  78.     GTYP_BOOLGADGET, (APTR)&ShellImage, (APTR)&Shell1Image, NULL, 0x0, NULL,
  79.     ID_icon2, (APTR)icon2Obj
  80. };
  81.  
  82. struct Gadget icon3Gad = {
  83.     &icon2Gad, 70, 13, 52, 23, 
  84.     GFLG_GADGHIMAGE | GFLG_GADGIMAGE, GACT_IMMEDIATE | GACT_RELVERIFY,
  85.     GTYP_BOOLGADGET, (APTR)&def_mapImage, (APTR)&def_map1Image, NULL, 0x0, NULL,
  86.     ID_icon3, (APTR)icon3Obj
  87. };
  88.  
  89. struct Gadget icon4Gad = {
  90.     &icon3Gad, 242, 13, 54, 22, 
  91.     GFLG_GADGHIMAGE | GFLG_GADGIMAGE, GACT_IMMEDIATE | GACT_RELVERIFY,
  92.     GTYP_BOOLGADGET, (APTR)&AppLauncherImage, (APTR)&AppLauncher1Image, NULL, 0x0, NULL,
  93.     ID_icon4, (APTR)icon4Obj
  94. };
  95.  
  96. struct Gadget icon5Gad = {
  97.     &icon4Gad, 184, 13, 54, 23, 
  98.     GFLG_GADGHIMAGE | GFLG_GADGIMAGE, GACT_IMMEDIATE | GACT_RELVERIFY,
  99.     GTYP_BOOLGADGET, (APTR)&DPaintImage, (APTR)&DPaint1Image, NULL, 0x0, NULL,
  100.     ID_icon5, (APTR)icon5Obj
  101. };
  102.  
  103.  
  104. int GetPubScreen(void)
  105. {
  106.   if (!(Scr = LockPubScreen(PubScrName)))
  107.     return(1L);
  108.  
  109.   if (!(VisualInfo = GetVisualInfo(Scr, TAG_DONE)))
  110.     return(2L);
  111.  
  112.   if (!(ScrDrawInfo = GetScreenDrawInfo(Scr)))
  113.     return(3L);
  114.   return(0L);
  115. }
  116.  
  117. void ClosePubScreen(void)
  118. {
  119.   if (VisualInfo)
  120.     FreeVisualInfo(VisualInfo);
  121.   if (Scr)
  122.     UnlockPubScreen(NULL,  Scr);
  123.   if (ScrDrawInfo)
  124.     FreeScreenDrawInfo(Scr,  ScrDrawInfo);
  125. }
  126.  
  127. int OpenIconWindow(char windtitle[80])
  128. {
  129.   struct NewGadget    NewGad;
  130.   struct Gadget       *Gad;
  131.   register UWORD i, j;
  132.   UWORD offsetx = Scr->WBorLeft;
  133.   UWORD offsety = Scr->WBorTop + Scr->Font->ta_YSize + 1;
  134.  
  135.   if (!(Gad = CreateContext(&IconGList)))
  136.       return(1L);
  137.  
  138.   icon1Gad.TopEdge += kWindowOffSetY;
  139.   icon2Gad.TopEdge += kWindowOffSetY;
  140.   icon3Gad.TopEdge += kWindowOffSetY;
  141.   icon4Gad.TopEdge += kWindowOffSetY;
  142.   icon5Gad.TopEdge += kWindowOffSetY;
  143.   for (i=0, j=0; i < IconNumGads; i++)
  144.   {
  145.     CopyMem((char *)&IconNGads[i], (char *)&NewGad, (long)sizeof(struct NewGadget));
  146.  
  147.     NewGad.ng_VisualInfo = VisualInfo;
  148.     NewGad.ng_LeftEdge += offsetx;
  149.     NewGad.ng_TopEdge  += offsety;
  150.  
  151.     IconGadgets[i] = Gad = CreateGadgetA((ULONG)IconGadTypes[i], Gad, &NewGad,
  152.     (struct TagItem *)&IconNTags[j]);
  153.     while (IconNTags[j])
  154.         j +=2;
  155.     j++;
  156.     if (!Gad)
  157.        return(2L);
  158.   }
  159.   IconGadgets[i-1]->NextGadget = &icon5Gad;
  160.   if (!(IconWnd = OpenWindowTags(NULL,
  161.       WA_Left,    IconLeft,
  162.       WA_Top,     IconTop,
  163.       WA_Width,    IconWidth,
  164.       WA_Height,    IconHeight + kWindowOffSetY,
  165.       WA_NewLookMenus, TRUE,
  166.       WA_IDCMP,    IDCMP_CLOSEWINDOW | IDCMP_GADGETUP | IDCMP_GADGETDOWN ,
  167.       WA_Flags,    WFLG_CLOSEGADGET  |  WFLG_SMART_REFRESH | 
  168.              WFLG_RMBTRAP |  WFLG_ACTIVATE | 
  169.              WFLG_DRAGBAR ,
  170.       WA_Gadgets,    IconGList,
  171.       WA_Title,    windtitle,
  172.       WA_ScreenTitle,    "Visual Arts V2.2 Copyright 1994-95 Danny Y. Wong  All Rights Reserved.",
  173.       WA_PubScreen,    Scr,
  174.       WA_MinWidth,    160,
  175.       WA_MinHeight,    50,
  176.       WA_MaxWidth,    640,
  177.       WA_MaxHeight,    200,
  178.       TAG_DONE)))
  179.           return(3L);
  180.  
  181.   DrawIconObjs();
  182.   GT_RefreshWindow(IconWnd, NULL);
  183.   RefreshGadgets(IconGadgets[0], IconWnd, NULL);
  184.   return(0L);
  185. }
  186.  
  187. void CloseIconWindow(void)
  188. {
  189.   if (IconWnd)
  190.     CloseWindow(IconWnd);
  191.   if (IconGList)
  192.     FreeGadgets(IconGList);
  193. }
  194.  
  195. int IconHandler(void)
  196. {
  197.   struct IntuiMessage    *msg;
  198.   struct VAobject    VAObject;
  199.   int running    = 1;
  200.   int (*func)(struct VAobject VAObject);
  201.   ULONG class;
  202.   UWORD code;
  203.  
  204.   while (msg=GT_GetIMsg(IconWnd->UserPort))
  205.   {
  206.     CopyMem((char *)msg, (char *)&IconMsg, (long)sizeof(struct IntuiMessage));
  207.     class = msg->Class;
  208.     code  = msg->Code;
  209.  
  210.     VAObject.va_Window = (struct Window *)IconWnd;
  211.     VAObject.va_Gadget = (struct Gadget *)msg->IAddress;
  212.     VAObject.va_IntuiMsg = (struct IntuiMessage *)msg;
  213.     VAObject.va_Flags = 0;
  214.     VAObject.va_UserData = 0;
  215.  
  216.     GT_ReplyIMsg(msg);
  217.     switch(class)
  218.     {
  219.  
  220.       case IDCMP_CLOSEWINDOW:
  221.          return(0);
  222.          break;
  223.  
  224.       case IDCMP_GADGETUP:
  225.         func = (void *)((struct Gadget *)IconMsg.IAddress)->UserData;
  226.         if (func != NULL)
  227.           running =  func(VAObject);
  228.         break;
  229.  
  230.     }
  231.   }
  232.   return(running);
  233. }
  234.  
  235. void DrawIconObjs(void)
  236. {
  237.   IconDrawRects(IconWnd);
  238.  
  239. }
  240.  
  241. int IconMainHandler(void)
  242. {
  243.   int running = 1;
  244.   ULONG windsig, signals;
  245.  
  246.   windsig = 1L << IconWnd->UserPort->mp_SigBit;
  247.  
  248.   while (running == 1)
  249.   {
  250.     signals = Wait( windsig );
  251.     if (signals & windsig)
  252.     {
  253.       running = IconHandler();
  254.     }
  255.   }
  256.   return(running);
  257. }
  258.  
  259. int main(int argc, char *argv[])
  260. {
  261.   int rc;
  262.  
  263.   if (!(GetPubScreen()))
  264.   {
  265.     if (!(OpenIconWindow("Icon Demo")))
  266.     {
  267.       rc = IconMainHandler();
  268.       CloseIconWindow();
  269.     }
  270.     ClosePubScreen();
  271.   }
  272.   return(0L);
  273. }
  274.